<?php
class MgClientesController extends AppController {
	var $name = 'MgClientes';
	var $helpers = array('Ajax','Javascript','Html','Form', 'Boton');
	var $uses = array ('MgCliente','MgTipoCliente');
	var $components = array('RequestHandler');
	var $paginate = array(
		'MgCliente'=>array(
        'limit' => 25,
        'order' => array(
            'MgCliente.id' => 'desc'
            )
            ));
            function index()
            {
            	$this->pageTitle = 'Clientes';
            }
            function mostrar($id=null)
            {
            	if(!empty($id)){
            		$this->MgCliente->recursive = 0;
            		$this->set('clientes', $this->paginate(array('MgCliente.id'=>$id)));
            	}
            	else {
            		$this->MgCliente->recursive = 0;
            		$this->set('clientes', $this->paginate());
            	}

            }

            function edit($id = null) {
            	$tipoc = $this->MgCliente->find('first',array('field'=>array('mg_tipo_cliente_id','conditions'=>array('MgCliente.id'=>$id))));

            	$this->set('tipoc',$tipoc['MgCliente']['mg_tipo_cliente_id']);
            	if (!$id && empty($this->data)) {
            		$this->Session->setFlash(__('Cliente Invalido', true));
            		$this->redirect(array('action'=>'index'));
            	}
            	if (!empty($this->data)) {
            		if ($this->MgCliente->save($this->data)) {
            			$this->Session->setFlash(__('Cliente ha sido guardado', true));
            			$this->redirect(array('action'=>'index'));
            		} else {
            			$this->Session->setFlash(__('Cliente no pudo guardarse. Por favor, intente de nuevo.', true));
            		}
            	}
            	if (empty($this->data)) {
            		$this->data = $this->MgCliente->read(null, $id);
            	}
            }

            function view($id = null) {
            	if (!$id) {
            		$this->Session->setFlash(__('Cliente no Existe.', true));
            		$this->redirect(array('action'=>'index'));
            	}
            	$this->set('mgCliente', $this->MgCliente->read(null, $id));

            }
            function insertar()
            {
            	$this->pageTitle='Crear Cliente Natural';
            	if(!empty($this->data)){
            		$this->MgCliente->create();
            		$this->data['MgCliente']['primer_apellido']=strtoupper($this->data['MgCliente']['primer_apellido']);
            		$this->data['MgCliente']['primer_nombre']=strtoupper($this->data['MgCliente']['primer_nombre']);
            		$this->data['MgCliente']['segundo_nombre']=strtoupper($this->data['MgCliente']['segundo_nombre']);
            		$this->data['MgCliente']['segundo_apellido']=strtoupper($this->data['MgCliente']['segundo_apellido']);
            		$this->data['MgCliente']['referencias']=strtoupper($this->data['MgCliente']['referencias']);
            		$ide = $this->data['MgCliente']['identidad'];
            		if($this->MgCliente->save($this->data)){
            			$idcliente=$this->MgCliente->find('first',array('order'=>'id ASC','conditions'=>array('MgCliente.identidad'=>$ide)));
            			$this->Session->setFlash('El cliente ' . $idcliente['MgCliente']['id'] . ' ha sido creado');
            			if (!empty($idcliente['MgCliente']['segundo_nombre']))
            			$this->redirect(array('controller'=>'TcContratos','action'=>'insertar', $idcliente['MgCliente']['id'],$idcliente['MgCliente']['primer_nombre'].' '.$idcliente['MgCliente']['segundo_nombre'].' '.$idcliente['MgCliente']['primer_apellido'].' '.$idcliente['MgCliente']['segundo_apellido']));
            			else
            			$this->redirect(array('controller'=>'TcContratos','action'=>'insertar', $idcliente['MgCliente']['id'],$idcliente['MgCliente']['primer_nombre'].' '.$idcliente['MgCliente']['primer_apellido'].' '.$idcliente['MgCliente']['segundo_apellido']));
            		}
            		else {
            			$this->Session->setFlash('Error NO se creo el cliente');
            		}

            	}
            }

            function insertarExt()
            {
            	Configure::write('debug', '0');
            	$this->layout = 'ajax';
            	if(!empty($this->data)){
            		$this->MgCliente->create();
            		$this->data['MgCliente']['primer_apellido']=strtoupper($this->data['MgCliente']['primer_apellido']);
            		$this->data['MgCliente']['primer_nombre']=strtoupper($this->data['MgCliente']['primer_nombre']);
            		$this->data['MgCliente']['segundo_nombre']=strtoupper($this->data['MgCliente']['segundo_nombre']);
            		$this->data['MgCliente']['segundo_apellido']=strtoupper($this->data['MgCliente']['segundo_apellido']);
            		$this->data['MgCliente']['referencias']=strtoupper($this->data['MgCliente']['referencias']);
            		$ide = $this->data['MgCliente']['identidad'];
            		if($this->MgCliente->save($this->data)){
            			$idcliente=$this->MgCliente->find('first',array('order'=>'id ASC','conditions'=>array('MgCliente.identidad'=>$ide)));
            			if (!empty($idcliente['MgCliente']['segundo_nombre'])){
            				$nombre_cliente = $idcliente['MgCliente']['primer_nombre'].' '.$idcliente['MgCliente']['segundo_nombre'].' '.$idcliente['MgCliente']['primer_apellido'].' '.$idcliente['MgCliente']['segundo_apellido'];
            			}
            			else{
            				$nombre_cliente = $idcliente['MgCliente']['primer_nombre'].' '.$idcliente['MgCliente']['primer_apellido'].' '.$idcliente['MgCliente']['segundo_apellido'];
            			}
            			$response = array(
   	     			'success' => true,
	     			'errors' => '',
            		'clienteid' =>$idcliente['MgCliente']['id'],  
            		'nombre_cliente' => $nombre_cliente          				
            			);
            		}
            		else
            		{
            			$Erros = array();
            			foreach ($this->validateErrors($this->MgCliente) as $key => $value)
            			{
            				$Erros['data[MgCliente]['.$key.']'] = $value;
            			}
            			$response = array(
   	     			'success' => false,
	     			'errors' =>$Erros		 			   
            			);
            		}
            		$this->set('response',$response);
            	}            	
            }

            function insertarJuridicoExt()
            {
            	Configure::write('debug', '0');
            	$this->layout = 'ajax';
            	if(!empty($this->data)){
            		$this->MgCliente->create();
            		$this->data['MgCliente']['nombre_comercial']=strtoupper($this->data['MgCliente']['nombre_comercial']);
            		$this->data['MgCliente']['primer_apellido_representante_legal']=strtoupper($this->data['MgCliente']['primer_apellido_representante_legal']);
            		$this->data['MgCliente']['primer_nombre_representante_legal']=strtoupper($this->data['MgCliente']['primer_nombre_representante_legal']);
            		$this->data['MgCliente']['segundo_nombre_representante_legal']=strtoupper($this->data['MgCliente']['segundo_nombre_representante_legal']);
            		$this->data['MgCliente']['segundo_apellido_representante_legal']=strtoupper($this->data['MgCliente']['segundo_apellido_representante_legal']);
            		$this->data['MgCliente']['referencias']=strtoupper($this->data['MgCliente']['referencias']);
            		$ide = $this->data['MgCliente']['identidad'];
            		if($this->MgCliente->save($this->data)){
            			$idcliente=$this->MgCliente->find('first',array('order'=>'id ASC',
            											'conditions'=>array('MgCliente.identidad'=>$ide)));
            			$response = array(
   	     						'success' => true,
	     						'errors' => '',
            					'clienteid' =>$idcliente['MgCliente']['id'],  
            					'nombre_cliente' => $idcliente['MgCliente']['nombre_comercial']  				
            			);
            		}
            		else
            		{
            			$Erros = array();
            			foreach ($this->validateErrors($this->MgCliente) as $key => $value)
            			{
            				$Erros['data[MgCliente]['.$key.']'] = $value;
            			}
            			$response = array(
   	     					'success' => false,
	     					'errors' =>$Erros		 			   
            			);
            		}
            		$this->set('response',$response);
            	}
            }

            function insertar_juridico()
            {
            	$this->pageTitle='Crear Cliente Natural';
            	if(!empty($this->data)){
            		$this->MgCliente->create();
            		$this->data['MgCliente']['nombre_comercial']=strtoupper($this->data['MgCliente']['nombre_comercial']);
            		$this->data['MgCliente']['primer_apellido_representante_legal']=strtoupper($this->data['MgCliente']['primer_apellido_representante_legal']);
            		$this->data['MgCliente']['primer_nombre_representante_legal']=strtoupper($this->data['MgCliente']['primer_nombre_representante_legal']);
            		$this->data['MgCliente']['segundo_nombre_representante_legal']=strtoupper($this->data['MgCliente']['segundo_nombre_representante_legal']);
            		$this->data['MgCliente']['segundo_apellido_representante_legal']=strtoupper($this->data['MgCliente']['segundo_apellido_representante_legal']);
            		$this->data['MgCliente']['referencias']=strtoupper($this->data['MgCliente']['referencias']);
            		$ide = $this->data['MgCliente']['identidad'];
            		if($this->MgCliente->save($this->data)){
            			$idcliente=$this->MgCliente->find('first',array('order'=>'id ASC','conditions'=>array('MgCliente.identidad'=>$ide)));
            			$this->Session->setFlash('El cliente juridico' . $idcliente['MgCliente']['id'] . ' ha sido creado');
            			$this->redirect(array('controller'=>'TcContratos','action'=>'insertar', $idcliente['MgCliente']['id'], $idcliente['MgCliente']['nombre_comercial']));
            		}
            		else {
            			$this->Session->setFlash('Error NO se creo el cliente');
            		}

            	}
            }

            function ajax_validate() {
            	Configure::write('debug', 0);
            	if($this->RequestHandler->isAjax()) {
            		$this->data['MgCliente'][$this->params['form']['field']] = $this->params['form']['value'];
            		$this->MgCliente->set($this->data);
            		if($this->MgCliente->validates()) {
            			$this->autoRender = false;
            		}
            		else {
            			$errorArray = $this->validateErrors($this->MgCliente);

            			$this->set('error', $errorArray[$this->params['form']['field']]);
            		}
            	}
            }


            function autoComplete() {
            	Configure::write('debug',0);
            	$paises = $this->MgCliente->find('all',array(
																'fields'=>array(
																			'identidad',
																			'id'
																			),
																			'limit'=>5,
																'order' => 'MgCliente.identidad ASC', 
																'conditions'=> array(
																				'MgCliente.identidad LIKE'=>$this->params['url']['q'].'%',
																			)));
																			$this->set('descripcioness', $paises);
            }

            function autoCompleteSearchId() {
            	Configure::write('debug',0);
            	$this->layout = 'ajax';
            	$id_cliente= $this->data[$this->MgCliente]['busquedaid'];
            	$clientes = $this->MgCliente->find('all', array(
  												 'conditions'=>array(
  												 				'MgCliente.id LIKE'=>$this->params['url']['q'].'%'),
   												'fields'=>array('id')));
            	$this->set('clientes', $clientes);
            }
            function autoCompleteSearchIdentidad() {
            	Configure::write('debug',0);
            	$this->layout = 'ajax';
            	$id_cliente= $this->data[$this->MgCliente]['busquedaidentidad'];
            	$clientes = $this->MgCliente->find('all', array(
   'conditions'=>array('MgCliente.identidad LIKE'=>$this->params['url']['q'].'%'),
   'fields'=>array('identidad')));
            	$this->set('clientes', $clientes);
            }
            function autoCompleteSearchNombre() {
            	Configure::write('debug',0);
            	$this->layout = 'ajax';
            	$id_cliente= $this->data[$this->MgCliente]['busquedanombre'];
            	$clientes = $this->MgCliente->find('all', array(
   'conditions'=>array('OR'=>array('concat(MgCliente.primer_nombre,'.'" "'.',MgCliente.primer_apellido) LIKE'=>$this->params['url']['q'].'%',
   						'MgCliente.nombre_comercial LIKE'=>$this->params['url']['q'].'%')),
   'fields'=>array('MgCliente.primer_nombre','MgCliente.primer_apellido','MgCliente.nombre_comercial')));
            	$this->set('clientes', $clientes);
            }


            function search()
            {
            	if (!empty($this->data)) {
            		$busqid = $this->data['MgCliente']['busquedaid'];
            		$busqidentidad = $this->data['MgCliente']['busquedaidentidad'];
            		$busqnombre = $this->data['MgCliente']['busquedanombre'];
            		$conditions = array(
        	'fields'=>array('id'),
            'conditions' => array(
                				'1' => '1'             
                				)
                				);
                				if (!empty($busqid))
                				$conditions = array(
        	'fields'=>array('id'),
            'conditions' => array(
                'MgCliente.id' => $busqid             
                				)
                				);
                				if (!empty($busqidentidad))
                				$conditions = array(
        	'fields'=>array('id'),
            'conditions' => array(
                'MgCliente.identidad' => $busqidentidad          
                				)
                				);
                				if (!empty($busqnombre))
                				$conditions = array(
        	'fields'=>array('id'),
            'conditions' => array(
                'OR'=>array('concat(MgCliente.primer_nombre,'.'" "'.',MgCliente.primer_apellido)' => $busqnombre, 'MgCliente.nombre_comercial'=>$busqnombre)           
                				)
                				);
                				$this->set('searchstring', $this->data['MgCliente']['busquedaid']);

                				$prueba= $this->MgCliente->find('first', $conditions);
                				$this->redirect(array('action'=>'mostrar',$prueba['MgCliente']['id']));

            	}
            }
            function buscacliente()
            {
            	Configure::write('debug', '0');  //set debug to 0 for this function because debugging info breaks the XMLHttpRequest
            	$this->layout = "ajax"; //this tells the controller to use the Ajax layout instead of the default layout (since we're using ajax . . .)
            	if(!empty($_POST['limit']))
            	$limit = $_POST['limit'];
            	if(!empty($_POST['start']))
            	$page = ($_POST['start']/$limit)+1;
            	if(!empty($_POST['query']))
            	$query = $_POST['query'];
            	if(!empty($_POST['fields']))
            	$fields = $_POST['fields'];

            	//--------Genera los campos que se utilizaran para el filtrado----------//
            	$fields=str_replace('[','',$fields);
            	$fields=str_replace(']','',$fields);
            	$fields=str_replace('"','',$fields);
            	$fields=str_replace('\\','',$fields);
            	$campos=explode(',',$fields);
            	$modelo='MgCliente';
            	foreach ($campos as $campo)
            	{
            		$conditions[$modelo.'.'.$campo.' LIKE']= '%'.strtoupper($query).'%';
            	}
            	if (!empty($query) && $query<>'')
            	{
            		$count = $this->MgCliente->find('count',
            		array('conditions'=>array('OR'=> $conditions)));
            		$contratoA = $this->MgCliente->find('all', array('conditions'=>array('OR'=> $conditions),
        													  'limit'=>$limit,
        													  'page'=>$page)); 	
            	}
            	else
            	{
            		$count = $this->MgCliente->find('count');
            		$contratoA = $this->MgCliente->find('all',
            		array('limit'=>$limit,
												 	   'page'=>$page));        			
            	}
            	$contratoArray = Set::extract($contratoA, '{n}.MgCliente');
            	$this->set('total', $count);
            	$this->set('clientes',$contratoArray);
            }
}?>